Log In  
BBS > Lexaloffle Community Superblog
This is a combined feed of all Lexaloffle user blogs. For Lexaloffle-related news, see @zep's blog.

All | Following | PICO-8 | Voxatron | General | Off-site
[ :: Read More :: ]

Cart #gamejamdor_gru_69-5 | 2020-03-28 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA
3

This is a prototype from a gamejam that the some of the folks in CoNDOR Season 9 are participating in. We have 24 hours to make a game with the theme of "NecroDancer/CoNDOR/etc"

Update 2020-03-28

Spent more time after the GameJam was completed to flesh out more of the mechanics. Feels like most of it is in a good spot, outside of some weird collision stuff that I haven't spent enough time on.

Music, which is kind of the biggest piece of Necrodancer, is hard and I have no idea how to compose Memento Mori into anything resembling what DannyB or any of the other composers did. Maybe one day I'll figure it out.

If anyone is willing to take a stab at it, I'd love to have it in. Comment/reach out if you are interested.

P#73839 2020-03-11 23:36 ( Edited 2020-03-28 20:41)
[ :: Read More :: ]

Once again using Dylan Bennett's Game Development with PICO-8 as the backbone, I've rolled out a new project based on his "Lander" recipe. Presenting Red Planet Mission:

Cart #yasodahiba-0 | 2020-03-11 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA

I've tweaked the sprites, added a start screen (with art!), and managed to put together menu and gameplay themes.

I couldn't figure out how to randomize the star background each time you start up the game, but I'll keep trying.

It's quite exciting to have put all the features of PICO-8 to use in a cart! The next step is to do something using my own code next time.

P#73836 2020-03-11 22:03
[ :: Read More :: ]

Cart #hillcipher-0 | 2020-03-11 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA

In classical cryptography, the Hill cipher is a polygraphic substitution cipher based on linear algebra. Invented by Lester S. Hill in 1929, it was the first polygraphic cipher in which it was practical (though barely) to operate on more than three symbols at once. The following discussion assumes an elementary knowledge of matrices.

https://en.wikipedia.org/wiki/Hill_cipher

I have added the space after the 'Z' in the alphabet so each symbol is represented by a number modulo 27.

P#73827 2020-03-11 17:46
[ :: Read More :: ]

I'm back in 2020 with this 1980's Midway arcade unkonown remake.

Player play the base as stationay gunner. Defending
The base shooting enemy ships, fires coming from
Cardinal points, including a turn around enemy satellite thats
Is going to crash on ypur base.

Cart #birekupezi-3 | 2020-06-30 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA
7

P#73828 2020-03-11 17:39 ( Edited 2020-10-08 14:03)
[ :: Read More :: ]

Cart #porklike-2 | 2020-03-17 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA
325

Porklike

Porklike is a minimalistic, classic Roguelike made in the Pico-8 enigne. Enter the tower of Wurstlord. Can you make it to the top and steal his legendary Kielbasa? 9 floors of dangerous traps and enemies await you. Only if you move carefully and master your character's abilities will you become the champion of Porklike.

(X) - Inventory / Confirm
(O) - Cancel

The music was composed by Sebastian Haßler. The environment art as well as the protagonist was inspired by the work of the pixel artist @pixelartm and used with their permission. The artwork of the enemies was inspired by the work of the pixel artist @kirai_s and used with their permission as well.

Porklike was created as part of a video tutorial series. If you want to make your own Roguelike, please check it out:

P#73825 2020-03-11 16:43 ( Edited 2020-03-17 12:52)
[ :: Read More :: ]

Hi everybody,

I'm having some difficulty figuring out how to solve a problem with how PICO-8 handles music, and I was wondering whether any of you out there could help me.

Let's say I have a few SFX files that I intend to collate into a music composition for my game, like in the following image:

Notice that there are a few unused measures for this clip. Let's assume that I have several other clips that are similarly structured.

When I try to string these together in the music editor, the system plays all those empty measures like they are rests. But what I would really like to happen is for the music to "jump" directly from the end of the clip to the beginning of the next one.

Is there a way to make this happen?

Thank you for any and all input!

P#73814 2020-03-11 04:19
[ :: Read More :: ]

This is a WIP version. The full release can be found here: https://www.lexaloffle.com/bbs/?tid=38573

Cart #shelled_shinobi_02-0 | 2020-04-11 | Code ▽ | Embed ▽ | No License
19

Alternate between classic platforming and controlling a fast sliding shell.
Originally based on the Nerdy Teachers platformer tutorial.

Update 4/11/20:

  • Added a jump buffer (5 frames on 30 FPS)
  • Less sliding when not shelled
  • Leftover pickups now get removed after game won.

Controls:
Gamepad / Keyboard:
Move: D-Pad or Left joystick / Arrow keys
Shell: ❎ / X or V
Jump: 🅾️ / C or Z

Original post:

Cart #shelled_shinobi-1 | 2020-03-10 | Code ▽ | Embed ▽ | No License
19

P#73800 2020-03-10 19:27 ( Edited 2020-06-28 03:08)
[ :: Read More :: ]

My first attempt to make something with PICO-8.

Cart #earshooter-1 | 2020-03-10 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA
1

P#73798 2020-03-10 04:18 ( Edited 2020-03-10 04:19)
[ :: Read More :: ]

I can't believe it's been almost 5 years I posted that old rotoscale effect here. It's been roughly 5 years that I discovered and loved Pico8, it's a console that stuck on me and that I love to program little bits and bobs on it.

I also can't believe how far the community have gone with that small computer. Just look back and see how much projects evolved on it and how thriving it is after so long. Y'all are so productive and creative you make the BBS and the community awesome!

So yeah, after a few years, I had to touch up that old cart. It was really poorly optimized. Inspired by a few awesome devs, I used a few new tricks based on peek/poke and damn, it goes way faster than I expected. I jumped on the occasion to add translation and a small effect, just because why the hell not.

See ya!

Cart #new_roto-2 | 2021-05-05 | Code ▽ | Embed ▽ | No License
10

Update 2020-05-05 (or 2020-05-05 for people reading days before months)
Finally got to make it fit under the 0.2 CPU timing limitations (Post binary operations re-re-balance). Big frame time gain of ~50%.

  • Increased the spritesheet to 32x32 to only keep a bitmask instead of calling FLR.
  • Precomputed a 128x128 pixel map to make up for the bigger pattern (and to make a neat shifting pattern)
  • Precomputed the wave effect to avoid doing the calculation too many times
  • Extra color shenanigans because why not?
  • Slowed down the scrolling and zooming. Bumping up the wave shift to amplify its visibility.
P#73789 2020-03-09 20:12 ( Edited 2021-05-05 17:15)
[ :: Read More :: ]

Cart #weaver-0 | 2020-03-09 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA
1

"Weaver"

280 characters

poke(24364,7)::n::z,a,r,f,p=64,0,rnd,rectfill,pset
cls(0)w=r(32)h=r(32)c=1+r(14)d=c+1+r(14)x,y,b=z,z,r(1)f(w,h,z,z,c)f(w,h,w-9,z,d)::_::p(x,y)p(x,h+z-y)p(w+z-x,y)b+=r(.4)-.2x=min(max(x+cos(b),w),z)y=min(max(y+sin(b),h),z)::m::flip()
if(x>w and y>h)goto _
a+=1
if(a>z)goto n
goto m
P#73780 2020-03-09 04:24
[ :: Read More :: ]

I sampled PICO-8 for the first time this weekend. Being a rank novice at programming, I have little idea of what I'm doing. Luckily, given the abundance of PICO-8 resources here and elsewhere, I'm learning quickly!

Here is my first attempt at a game: a barely modified version of Cave Diver from Dylan Bennett's Game Development with PICO-8. I give you: Bat Cave!

Cart #dasanidez-0 | 2020-03-09 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA
1

It leaves a bit to be desired as a "game," but in terms of newbie accomplishments, I'm pretty proud of figuring out how to insert a title screen. That will certainly come in handy later.

Here's to producing better games in the future!

P#73779 2020-03-09 03:57 ( Edited 2020-03-09 03:58)
[ :: Read More :: ]

Cart #pixeljump_cubg-0 | 2020-03-09 | Code ▽ | Embed ▽ | No License
4

Pico Pixel Jump is a remake of Pixel Jump on TIC-80.
It uses some of the PICO-8 secret colours to have a similar palette.

Keep your character jumping on the platform to earn points and get the high score.

Button controls:

  • D-Pad to move the mouse.
  • O/Z to click.

To change characters, click the left side of the title screen.

You can toggle between button and mouse control in the pause menu (P or Enter).

P#73775 2020-03-09 02:02
[ :: Read More :: ]

Cart #marshinfinity_cubg_1-0 | 2020-04-21 | Code ▽ | Embed ▽ | No License
16

Click this to see the itch.io page

v1.2 Multiplayer Update Changes:


=-=-=-=-=-=-=-=-=

New features

  • Added multiplayer!
  • Multiplayer supports up to 6 players using controllers.
  • You can choose from 8 different marshmallow colours by pressing up/down on the title screen.
  • If you get cooked in multiplayer, you become a ghost.
  • Ghosts can temporarily disable pickups for the other players and make the barrier move faster.
  • Normal players can revive ghost players by summoning a cloud and touching a ghost.
  • Reviving a ghost will take away one of your hitpoints.
  • Ghosts will also revive automatically with full health after some time.
  • If everyone is a ghost, the game is over and the player with the most coins wins!

General Changes

  • You can disable flickery effects in the pause menu.
  • The camera now forces you to move forwards if you stop for too long.
  • The score is counted based on coins instead of distance.
  • New areas.
  • Areas will randomly be flipped backwards.
  • Added invincibility powerup.
    [24x24]
  • Added slippery ice blocks.
    [4x4]

=-=-=-=-=-=-=-=-=

Marshmallow Infinity is an endless platformer about a marshmallow, originally developed in 48 hours.

Controls (Normal):

  • Use the left and right arrow keys to move and Z to charge a jump.
  • Release Z when the marshmallow stops flashing to jump high.
  • Release Z while it is still flashing to do a small jump.
  • Summon a cloud with X.

Additional controls (3 Hitpoints, Normal):

  • Hold the direction of a wall you are next to while falling and press Z to wall jump.

Additional controls (2 Hitpoints, Normal):

  • Hold the direction of a wall to stick to it and fall slowly (you can still wall jump).
  • Hold the up arrow when hitting a ceiling to stick to it and climb.
  • Hold the direction of a wall to stick to it, then press up or down to climb.

Controls (As Ghost):

  • Use the arrow keys to move.
  • Press Z to disable the pickups and speed up the barrier for a short time.
  • You will be revived automatically after some time.

Here are the original 48 hour and improved plus versions:


You can't wallclimb in this version:
Cart #marshinfinity_cubg_0-0 | 2020-03-09 | Code ▽ | Embed ▽ | No License
16


You can wallclimb in this version:
Cart #marshplus_cubg_1-0 | 2020-03-09 | Code ▽ | Embed ▽ | No License
16


P#73772 2020-03-09 01:30 ( Edited 2020-04-21 08:53)
[ :: Read More :: ]

Cart #cgprospector-0 | 2020-03-08 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA
10

Controls

Arrow keys to move. Z or X to fire.

Walk into a gun to equip it. Collect gold / fuel / light / more guns.

The desktop build works with a gamepad plugged in (tested on Windows 10).

Cardinal Gun Prospector

You have beamed down your remote droid to loot the famed Monster Caverns. You only have enough juice to beam down a simple pop-gun next to you but plenty of weapons are left around from previous visitors. Get in there and loot as much gold as you can!

Made for the 7 Day Roguelike Challenge, 2020.

P#73757 2020-03-08 19:11
[ :: Read More :: ]

Vector math for PICO-8!

Have you ever been looking at your code and been like:
"Hmm, i sure do add two numbers to another set of two numbers a lot," then do i have the solution for you!
At the low low price of like 400 tokens, PICO-8 vector math can be yours!
I originally made this to streamline a platformer I may or may not ever finish, but I realized that other people might want this, flagrant waste of tokens or not.

Features!


-Constructor function: vec2(x,y) will make a vector, vec2(x) copies x twice
-The four basic functions, plus exponetation
-The concentation operator (..) does dot products
-A normalize function

The code

There are two versions of the whole program. One handles errors more gracefully, while the other has a smaller token footprint

Required functions:

The metatable depends heavily on these two functions

  • Constructor

This function creates and gives the right metatable to the given two numbers, saving a few tokens every time you or the metatable itself wants to make a new metatable

function vec2(x,y)
 if (not y) y=x
 return setmetatable({x=x,y=y},vec2mt)
end
  • Argument preperation

This function returns a list of two vectors, either the two vectors passed, or a vector and then a doubles number. This function means you cannot divide a number by a vector, or subtract a vector from a number.

function vecargs(a,b)
if(type(a)=="number")a,b=b,a
 if type(b)=="number" then
  return {a,vec2(b)}
 elseif getmetatable(b)==vec2mt then
  return {a,b}
 end
end

Fault tolerant metatable

vec2mt={
 __index={x=0,y=0},
 __newindex=function (tble, k, v)
  if k=='x' or k=='y' then
   rawset(tble,k,v)                      
  else
   printh("bad key")
  end
 end,
 __unm = function(tble)
  return vec2(-tble.x,-tble.y)
 end,
 __add = function(a,b)
  local c=vecargs(a,b) a,b=c[1],c[2]
  return vec2(a.x+b.x,a.y+b.y)
 end,
 __mul = function(a,b)
  local c=vecargs(a,b) a,b=c[1],c[2]
  return vec2(a.x*b.x,a.y*b.y)
 end,
 __div = function(a,b)
  local c=vecargs(a,b) a,b=c[1],c[2]
  return vec2(a.x/b.x,a.y/b.y)
 end,
 __sub = function(a,b)
  local c=vecargs(a,b) a,b=c[1],c[2]
  return a+(-b)
 end,
 __pow = function(a,b)
  local c=vecargs(a,b) a,b=c[1],c[2]
  return vec2(a.x^b.x,a.y^b.y)
 end,
 __concat = function(a,b)
  local c=vecargs(a,b) a,b=c[1],c[2]
  return a.x*b.x+a.y*b.y --15
 end,
}

Fault intolerant metatable

vec2mt={
 __unm = function(tble)
  return vec2(-tble.x,-tble.y)
 end,
 __add = function(a,b)
  local c=vecargs(a,b) a,b=c[1],c[2]
  return vec2(a.x+b.x,a.y+b.y)
 end,
 __mul = function(a,b)
  local c=vecargs(a,b) a,b=c[1],c[2]
  return vec2(a.x*b.x,a.y*b.y)
 end,
 __div = function(a,b)
  local c=vecargs(a,b) a,b=c[1],c[2]
  return vec2(a.x/b.x,a.y/b.y)
 end,
 __sub = function(a,b)
  local c=vecargs(a,b) a,b=c[1],c[2]
  return a+(-b)
 end,
 __pow = function(a,b)
  local c=vecargs(a,b) a,b=c[1],c[2]
  return vec2(a.x^b.x,a.y^b.y)
 end,
 __concat = function(a,b)
  local c=vecargs(a,b) a,b=c[1],c[2]
  return a.x*b.x+a.y*b.y --15
end,
}

Normalize function

function norm(vec)
 local power=vec^2
 return vec/sqrt(power.x+power.y)
end

P#73745 2020-03-08 17:37
[ :: Read More :: ]

Cart #minerunner-0 | 2020-03-08 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA
5

A cross between an infinite runner and minesweeper.

P#73752 2020-03-08 08:39
[ :: Read More :: ]

can someone tell me why this always fails?
it isn't garenteed to always reach 63,63 even through i floor it.

function main()
    domain=true

    while domain do
     cls()
        spr(16,4,0,15,2)

        for i=0,8 do star() end
        yield()

    end
end

function star()
 dostar=true
 inst  =
 {
  sx=rnd(127),
  sy=127,
  ex=63,
  ey=63,
 }

    while dostar do
        local dx=flr(inst.sx)==flr(inst.ex)
        local dy=flr(inst.sy)==flr(inst.ey)
        rectfill(0,0,127,24,0)
        print(tostr(dx)..","..tostr(dy),0,0,7)
        if dx and dy then   
            dostar=false
        else
         pset (inst.sx,inst.sy,7)
         print(flr(inst.sx).."/"..flr(inst.ex),0,8,7)
         print(flr(inst.sy).."/"..flr(inst.ey),0,16,7)
            inst.sx+=(inst.ex-inst.sx)*mainstarspd
            inst.sy+=(inst.ey-inst.sy)*mainstarspd
        end
        yield()
    end
end
P#73746 2020-03-07 22:26
[ :: Read More :: ]

Cart #nudadufuju-0 | 2020-03-07 | Embed ▽ | License: CC4-BY-NC-SA
3

P#73740 2020-03-07 03:39
[ :: Read More :: ]

Cart #pajagupuyi-0 | 2020-03-07 | Embed ▽ | No License
1

P#73739 2020-03-07 03:26
[ :: Read More :: ]

Hello there!

I have been exploring Pico8 for over 2 years now trying to understand coding with let's say "some" progress.

But I'm stuck with Tables. I mean, I get the concept but there's something I haven't got to fully understand therefore I get mixed results.

So I created actors (player, enemy) as tables but I can't make them spawn several instances on screen. So far I have got to draw 5 enemies on stage (at random position) but they keep appearing all the time (where they should appear once), any light about what I'm doing wrong? here's the code:

--init
function _init()
--globals
wave=5
w=112
h=112

--player
pyr={
spt=1,
x=w/3,
y=h/3,
life=10,
spd=2,
flp=false,
idle=true,
}
enms={} --enemies

enm={ --single enemy

spt=10,
life=5,
spd=1,
flp=false,
idle=true,
draw=function()
spr(enm.spt,flr(rnd(w)),flr(rnd(h)))
end,
}

for a=1,wave do
add(enms,enm)
end

end

--draw
function _draw()
cls()
print(#enms,20,20,7) --checking created instances from enms table
foreach(enm,enm:draw())
end


I have read tutorials, videos and everything available but still I haven't figured it out yet :( Any help is much appreciated.

P#73732 2020-03-06 21:40
View Older Posts